package ca.qc.bdeb.jeuxdesboites;

import javax.swing.JLabel;
import javax.swing.JPanel;

/**
 * Classe qui affiche le temps.
 * 
 * @author Eric Wenaas <eric.wenaas@bdeb.qc.ca>
 * @version 0.3
 */

final class HorlogeGUI extends JPanel {
    
    private JLabel etiquetteTemps;
    private static long MILLIS_DANS_HEURE = 1000 * 60 * 60;
    private static long MILLIS_DANS_MINUTE = 1000 * 60;
    private static long MILLIS_DANS_SECONDE = 1000;
    private static long MILLIS_DANS_DIXIEME = 100;
      
    HorlogeGUI() {
        initComponents();
    }
    
    private void initComponents() {
        initEtiquetteTemps();
    }

    private void initEtiquetteTemps() {
        etiquetteTemps = new JLabel();
        etiquetteTemps.setFont(GlobalesGUI.POLICE_HORLOGE);
        add(etiquetteTemps);
    }
    
    void afficherTempsRestant(long millis) {
        if (millis > MILLIS_DANS_MINUTE) {
            afficherTempsNormal(millis);            
        }  else {
            afficherMoinsUneMinute(millis);
        }
    }
    
    void afficherTempsNormal(long millis) {
        long temps = millis;
        long heures = temps / MILLIS_DANS_HEURE;
        temps = temps - heures * MILLIS_DANS_HEURE;
        long minutes = temps / MILLIS_DANS_MINUTE;
        temps = temps - minutes * MILLIS_DANS_MINUTE;
        long secondes = temps / MILLIS_DANS_SECONDE;
        
        StringBuilder constructeur = new StringBuilder();
        if (minutes < 10) {
            constructeur.append("0");
        }
        constructeur.append(minutes);
        constructeur.append(":");
        if (secondes < 10) {
            constructeur.append("0");
        }
        constructeur.append(secondes);
        etiquetteTemps.setText(constructeur.toString());
    }
    
    void afficherMoinsUneMinute(long millis) {
        long temps = millis;
        long secondes = temps / MILLIS_DANS_SECONDE;
        temps = temps - secondes * MILLIS_DANS_SECONDE;
        long dixiemes = temps / MILLIS_DANS_DIXIEME;
        
        StringBuilder constructeur = new StringBuilder();
        if (secondes < 10) {
            constructeur.append("0");
        }
        constructeur.append(secondes);
        constructeur.append(".");
        constructeur.append(dixiemes);
        etiquetteTemps.setText(constructeur.toString());        
    }
}
